<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin:0;
            border:0;
        }
        body{
            height:2000px;
        }
        #slide-effect{
            width:500px;
            zoom:1;
            margin:100px auto;
        }
        #slide-effect:after{
            content:'';
            display:table;
            clear:both;
        }
        #slide-content{
            width:450px;
            height:500px;
            overflow:hidden;
            float:left;
            border:1px solid #999;
            position:relative;
            border-radius:15px;
        }
        .slide-content-main{
            position:absolute;
            padding:15px;
        }
        #slide{
            float:right;
        }
        .slide-outside{
            width:30px;
            height:500px;
            float:right;
            background:lightseagreen;
            position:relative;
            border-radius:15px;
        }
        .slide-inside{
            width:100%;
            height:50px;
            background:lightblue;
            position:absolute;
            border-radius:15px;
        }
        #windowmenu{
            width:200px;
            background:#fff;
            border:1px solid #999;
            position:absolute;
            box-shadow:2px 2px 2px 2px rgba(0,0,0,.3);
            display:none;
        }
        #windowmenu a{
            display:block;
            width:100%;
            line-height:50px;
            text-decoration:none;
            color:#999;
            border-bottom:1px solid #999;
        }
    </style>
</head>
<body>
<section id="slide-effect">
    <article id="slide-content">
        <div class="slide-content-main">
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
            <p>平时网页中如果需要出现点击效果的按钮或是菜单，你可能首先想
                到的是js的点击事件，实现这些利用js虽然也简单，但毕竟是脚
                本，运行起来，性能上还是会慢些，其实有些点击效果用css也可
                以实现，运行css那可就比js快多了，下面总结一些用纯css实现的点击效果。</p>
        </div>
    </article>
    <section id="slide">
        <div class="slide-outside">
            <div class="slide-inside"></div>
        </div>
    </section>
</section>
</body>
<script>
    window.onload=function(){
        var $aside=document.createElement('aside');
        $aside.setAttribute('id','windowmenu');
        var asidestr=[
            '<a href="javascript:void(0)">123</a>',
            '<a href="javascript:void(0)">234</a>',
            '<a href="javascript:void(0)">345</a>'
        ].join('');
        $aside.innerHTML=asidestr;
        document.body.appendChild($aside);

        var $content=getEleByClass('slide-content','slide-content-main')[0];
        var $out=getEleByClass('slide','slide-outside')[0];
//        console.log($out);
        var $in=getEleByClass('slide','slide-inside')[0];
        var speed=10;
//        console.log($out,$in);
        $in.onmousedown=function(ev){
            var ev=ev||event;
            var outH=ev.clientY-this.offsetTop;
            document.onmousemove=function(eve){
                var eve=eve||event;
                var inTop=eve.clientY-outH;
                var maxTop=$out.offsetHeight-$in.offsetHeight;
                if(inTop<=0){
                    inTop=0;
                }else if(inTop>=maxTop){
                    inTop=maxTop;
                }
                $in.style.top=inTop+'px';
                $content.style.top=-($content.offsetHeight-$content.parentNode.offsetHeight)/maxTop*inTop+'px';
            };
            document.onmouseup=function(){
                document.onmousemove=null;
            };
        };
        $content.oncontextmenu=function(ev){
            var ev=ev||event;
            $aside.style.top=ev.clientY+'px';
            $aside.style.left=ev.clientX+'px';
            $aside.style.display='block';
            return false;
        };
        document.onclick=function(){
            $aside.style.display='none';
        };
        $aside.onclick=function(ev){
            var ev=ev||event;
            console.log(ev);
            ev.cancelBubble=true;
        };
        $content.onmousewheel=function(ev){
            var ev=ev||event;
//            console.log(ev.wheelDelta);
            var contentspeed=($content.offsetHeight-$content.parentNode.offsetHeight)/($out.offsetHeight-$in.offsetHeight)*speed;
            if(ev.wheelDelta<0){
                var maxTop=$in.offsetTop;
                var contentmaxTop=$content.offsetTop;
                if(maxTop>=$out.offsetHeight-$in.offsetHeight-speed) {
//                    $in.offsetTop=$out.offsetHeight-$in.offsetHeight-10;//offsetTop不能赋予值改变
                    maxTop=$out.offsetHeight-$in.offsetHeight-speed
                }
                $in.style.top=maxTop+speed+'px';
                if(contentmaxTop<=-($content.offsetHeight-$content.parentNode.offsetHeight)+contentspeed) contentmaxTop=-($content.offsetHeight-$content.parentNode.offsetHeight)+contentspeed;
                $content.style.top=contentmaxTop-contentspeed+'px';
            }else{
                var minTop=$in.offsetTop;
                var contentminTop=$content.offsetTop;
                if(minTop<=10) minTop=speed;
                $in.style.top=minTop-speed+'px';
                if(contentminTop>-contentspeed) contentminTop=-contentspeed;
                $content.style.top=contentminTop+contentspeed+'px';
            }
            return false;
        };
        document.onmousewheel=function(ev){
//            return false;
        };
        /*document.addEventListener('DOMMouseScroll',function(ev){
           var ev=ev||event;
           console.log(ev.detail);
       },false)*/
    };
    function getEleByClass(pId,cClass){
        var $pId=document.getElementById(pId);
        var $classs=$pId.getElementsByTagName('*');
        var cla=[];
        for(var i=0;i<$classs.length;i++){
            if($classs[i].getAttribute('class')){
                var classarr=$classs[i].getAttribute('class').split(' ');
                for(var j=0;j<classarr.length;j++){
                    if(cClass==classarr[j]){
                        cla.push($classs[i]);
                        break;
                    }
                }
            }
        }
        return cla;
    }
</script>
</html>